/**
 * @File   drv_led.c 
 * @Berif  LED硬件初始化
 * @Encode UTF-8
 * @Log    Date         Author     Notes
 *         2021.01.26   Jimmy      first version
 */
#include "rtthread.h"
#include "stm32f4xx.h"
#include "stm32f4xx_hal.h"
#include "error_type.h"

#define LED_0_PORT                (GPIOE)
#define LED_0_PIN                 (GPIO_PIN_3)

#define LED_1_PORT                (GPIOE)
#define LED_1_PIN                 (GPIO_PIN_4)

#define LED_2_PORT                (GPIOG)
#define LED_2_PIN                 (GPIO_PIN_9)

#define LED_ON_LEVEL              (GPIO_PIN_RESET)
#define LED_OFF_LEVEL             (GPIO_PIN_SET)


/**
 * @brief  led0硬件初始化 
 * @param  {type}
 * @retval none
 */
void led0_gpio_init(void)
{
  GPIO_InitTypeDef GPIO_InitStruct = {0};

  __HAL_RCC_GPIOE_CLK_ENABLE();

  GPIO_InitStruct.Pin   = LED_0_PIN;
  GPIO_InitStruct.Mode  = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull  = GPIO_PULLUP;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
  HAL_GPIO_Init(LED_0_PORT, &GPIO_InitStruct);

  HAL_GPIO_WritePin(LED_0_PORT, LED_0_PIN, GPIO_PIN_SET);
}

/**
 * @brief  led0 开 
 * @param  {type}
 * @retval none
 */
void led0_turn_on(void)
{
  HAL_GPIO_WritePin(LED_0_PORT, LED_0_PIN, LED_ON_LEVEL);
}

/**
 * @brief  led0 关 
 * @param  {type}
 * @retval none
 */
void led0_turn_off(void)
{
  HAL_GPIO_WritePin(LED_0_PORT, LED_0_PIN, LED_OFF_LEVEL);
}


/**
 * @brief  led1硬件初始化 
 * @param  {type}
 * @retval none
 */
void led1_gpio_init(void)
{
  GPIO_InitTypeDef GPIO_InitStruct = {0};

  __HAL_RCC_GPIOE_CLK_ENABLE();

  GPIO_InitStruct.Pin   = LED_1_PIN;
  GPIO_InitStruct.Mode  = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull  = GPIO_PULLUP;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
  HAL_GPIO_Init(LED_1_PORT, &GPIO_InitStruct);

  HAL_GPIO_WritePin(LED_1_PORT, LED_1_PIN, GPIO_PIN_SET);
}

/**
 * @brief  led1 开 
 * @param  {type}
 * @retval none
 */
void led1_turn_on(void)
{
  HAL_GPIO_WritePin(LED_1_PORT, LED_1_PIN, LED_ON_LEVEL);
}

/**
 * @brief  led1 关 
 * @param  {type}
 * @retval none
 */
void led1_turn_off(void)
{
  HAL_GPIO_WritePin(LED_1_PORT, LED_1_PIN, LED_OFF_LEVEL);
}

/**
 * @brief  led2硬件初始化 
 * @param  {type}
 * @retval none
 */
void led2_gpio_init(void)
{
  GPIO_InitTypeDef GPIO_InitStruct = {0};

  __HAL_RCC_GPIOE_CLK_ENABLE();

  GPIO_InitStruct.Pin   = LED_2_PIN;
  GPIO_InitStruct.Mode  = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull  = GPIO_PULLUP;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
  HAL_GPIO_Init(LED_2_PORT, &GPIO_InitStruct);

  HAL_GPIO_WritePin(LED_2_PORT, LED_2_PIN, GPIO_PIN_SET);
}

/**
 * @brief  led2 开 
 * @param  {type}
 * @retval none
 */
void led2_turn_on(void)
{
  HAL_GPIO_WritePin(LED_2_PORT, LED_2_PIN, LED_ON_LEVEL);
}

/**
 * @brief  led2 关 
 * @param  {type}
 * @retval none
 */
void led2_turn_off(void)
{
  HAL_GPIO_WritePin(LED_2_PORT, LED_2_PIN, LED_OFF_LEVEL);
}

/* End of file */
